package org.alis.rpc.common.serializer;

import java.util.Arrays;

/**
 * 序列化接口
 * @author lc
 * @version v1.0.0
 * @date 2020/8/20 15:56
 * @className Serializer.class
 */
public interface Serializer {

    /**
     * 序列化成为字节
     * @param obj 泛型对象
     * @param <T> 对象类型
     * @return 字节数组
     */
    <T> byte[] serializer(T obj);

    /**
     * 序列化成字符串
     * @param obj 对象
     * @return json 数据
     */
    default  <T>  String serializerString(T obj){
       return Arrays.toString(serializer(obj));
    }

    /**
     * 反序列化对象
     * @param bytes 字节数组
     * @param clazz 反射类
     * @param <T> 类型
     * @return 反射后的对象
     */
    <T> T deserializer(byte[] bytes,Class<T> clazz);


}
